/**
 * @description 根据当前浏览器为 CSS 属性添加前缀。
 * @param {*} prop 
 * @returns 
 */
const prefix = prop => {
  // 使用 String.prototype.charAt() 和 String.prototype.toUpperCase() 将属性大写，该属性将附加到供应商前缀字符串。
  const capitalizedProp = prop.charAt(0).toUpperCase() + prop.slice(1);
  const prefixes = ['', 'webkit', 'moz', 'ms', 'o'];
  // Array.prototype.findIndex() 在供应商前缀字符串数组上使用
  // 测试 Document.body 其 CSSStyleDeclaration 对象中是否定义了其中一个字符串，否则返回null。
  const i = prefixes.findIndex(
    prefix =>
      typeof document.body.style[prefix ? prefix + capitalizedProp : prop] !==
      'undefined'
  );
  // 判断是否有供应商前缀返回对应 CSS 属性。
  return i !== -1 ? (i === 0 ? prop : prefixes[i] + capitalizedProp) : null;
};
// 例子
prefix('appearance')
